#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include "main.h"
#include "gestion_mots.h"

void trouver_mot(char *mot_a_trouver,int offset)
{
	FILE *dico;
	int lg=0;
	dico=fopen("liste_francais.txt","r");
	rewind(dico);
	while(offset>0)
		{
		fscanf(dico,"%s",mot_a_trouver);
		lg=strlen(mot_a_trouver);
		if(lg<=*taille_grille)
			offset--;
		}
	fclose(dico);
}

bool mot_dans_dico(char *mot_utilisateur)
{
	bool InDict=false;
	int comparaison=1,lecture_ok=1;
	char current[25]="";
	FILE *dico;
	dico=fopen("liste_francais.txt","r");
	rewind(dico);
	while(lecture_ok==1 && InDict == false)
		{
		lecture_ok=fscanf(dico,"%s",current);
		comparaison=strcmp(mot_utilisateur,current);
		if(comparaison==0)
		      InDict=true;
		else
		      InDict=false;
		}
	fclose(dico);
	return InDict;
}

bool controler_taille(char *mot_utilisateur)
{
    if(strlen(mot_utilisateur)<=*taille_grille)
	return true;
    else {
	    printf("La taille du mot entré dépasse la taille maximale de la grille !!\n");
	    return false;
	    }
}

int nbmots()
{
	FILE *dico;
	char caraclu;
	int nombre_mots=0,nblettre=0;
	dico=fopen("liste_francais.txt","r");
	rewind(dico);
	do{
		caraclu=fgetc(dico);
		nblettre++;
		if(caraclu=='\n' && nblettre<=*taille_grille)
			nombre_mots++;
		if(caraclu=='\n')
			nblettre=0;
	  }
	while(caraclu!=EOF);
	fclose(dico);
	return nombre_mots;
}

int nombreAleatoire(int nombreMax)
{
    srand(time(NULL));
    return (rand() % nombreMax);
}

void sortie_mot_hasard(char *mot_a_trouver)
{
  int nb_total=0,offset=0;
  nb_total=nbmots();
  printf("Nombre mots de %d lettres : %d\n",*taille_grille,nb_total);
  offset=nombreAleatoire(nb_total);
  printf("Offset : %d\n",offset);
  trouver_mot(mot_a_trouver,offset);
}

void traitement_mot(mot userword[NBLIGNE][MAX_MOT],char *mot_a_trouver,int indice)
{
  int i=0,x=0;
  //Test d'apartenance
  while(x<*taille_grille)
  {
  for(i=0;i<*taille_grille;i++)
    if(userword[indice][x].lettre==mot_a_trouver[i])
       userword[indice][x].appartient=true;
  x++;
  }
  //Test de placement
  for(i=0;i<*taille_grille;i++)
      if(userword[indice][i].lettre==mot_a_trouver[i])
	    userword[indice][i].bien_placer=true;
}

bool gagner(mot userword[NBLIGNE][MAX_MOT],char *mot_a_trouver,int indice)
{
  int i=0,bienplacer=0,lg=0;
  bool win=false;
  for(i=0;i<*taille_grille;i++)
    if(userword[indice][i].bien_placer==true)
	bienplacer++;
  lg=strlen(mot_a_trouver);
  if(bienplacer==lg)
      win=true;
  else 
      win=false;
  return win;
}
  
 